package com.w.picture.api.aliyunai.model;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * 查询任务结果响应模型
 *
 * @author wzp
 * @since 2025/1/25
 */
@Data
@Accessors(chain = true)
public class GetOutPaintingTaskResponse implements Serializable {

    /**
     * 输出的任务信息。
     */
    private Output output;

    /**
     * 接口错误码。接口成功请求不会返回该参数。
     */
    private String code;

    /**
     * 接口错误信息。接口成功请求不会返回该参数。
     */
    private String message;

    /**
     * 请求唯一标识。可用于请求明细溯源和问题排查。
     */
    private String requestId;

    /**
     * 图像统计信息。
     */
    private Usage usage;

    /**
     * 输出的任务信息。
     */
    @Data
    @Accessors(chain = true)
    public static class Output implements Serializable {
        /**
         * 任务id。
         */
        private String taskId;

        /**
         * 任务状态。
         * PENDING：排队中
         * RUNNING：处理中
         * SUSPENDED：挂起
         * SUCCEEDED：执行成功
         * FAILED：执行失败
         * UNKNOWN：任务不存在或状态未知
         */
        private String taskStatus;

        /**
         * 任务提交时间。
         */
        private String submitTime;

        /**
         * 任务执行时间。
         */
        private String scheduledTime;

        /**
         * 任务完成时间。
         */
        private String endTime;

        /**
         * 输出图像URL地址。
         */
        private String outputImageUrl;

        /**
         * 任务统计信息。
         */
        private TaskMetrics taskMetrics;
    }

    /**
     * 任务统计信息。
     */
    @Data
    @Accessors(chain = true)
    public static class TaskMetrics implements Serializable {
        /**
         * 总的任务数。
         */
        private Integer total;

        /**
         * 任务状态为成功的任务数。
         */
        private Integer succeeded;

        /**
         * 任务状态为失败的任务数。
         */
        private Integer failed;
    }

    /**
     * 图像统计信息。
     */
    @Data
    @Accessors(chain = true)
    public static class Usage implements Serializable {
        /**
         * 生成图像的数量。
         */
        private Integer imageCount;
    }
}